#include<stdio.h>
#include<malloc.h>
#include<sys/types.h>
#include<stdlib.h>
#include<string.h>
#include<unistd.h>
int g_val=100;
int main(int argc,char*argv[],char*envp[])
{
  //for(int i=0;argv[i]!=NULL;i++)
  // {
  // printf("argc[%d],%s\n",i,argv[i]);
  //  sleep(1);
  // }
 //  for(int i=0;argv[i]!=NULL;i++)
  // {
  //   printf("%s\n", env[i]);
  // }
//  extern char **environ;
//int i = 0;
//for(; environ[i]; i++){
//printf("%s\n", environ[i]);
//]
//    if(argc == 2){
//        if(strcmp(argv[1], "-a") == 0){
//            printf("hello linux\n");
//        }
//        else if(strcmp(argv[1], "-b") == 0){
//            printf("hello world!\n");
//        }
//        else{
//            printf("hello default!\n");
//        }
//    }
//    printf("argc : %d\n", argc);
//  int g_val = 100;

  pid_t id = fork();
  //int id = fork();
  if(id == 0){
      //child
      g_val=200;
      printf("child: pid: %d, ppid : %d, g_val: %d, &g_val: %p\n", getpid(), getppid(), g_val, &g_val);
  }
  else{
      //father
      sleep(2);
      printf("father: pid: %d, ppid : %d, g_val: %d, &g_val: %p\n", getpid(), getppid(), g_val, &g_val);
  }

  sleep(1);
//		int g_unval=200;
//    printf("code addr: %p\n", main);
//    char *str=  "hello world";
//    printf("read only addr: %p\n", str);
//    printf("init addr: %p\n", &g_val);
//    printf("uninit addr: %p\n",&g_unval);
//
//    int *p = malloc(10);
//    printf("heap addr: %p\n", p);
//
//    printf("stack add: %p\n", &str);
//    printf("stack add: %p\n", &p);
  return 0;


}
